﻿using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace UniRx
{
	// Token: 0x02000416 RID: 1046
	[StructLayout(LayoutKind.Sequential, Size = 1)]
	public struct DictionaryAddEvent<TKey, TValue> : IEquatable<DictionaryAddEvent<TKey, TValue>>
	{
		// Token: 0x06001582 RID: 5506 RVA: 0x0005F685 File Offset: 0x0005DA85
		public DictionaryAddEvent(TKey key, TValue value)
		{
			this = default(DictionaryAddEvent<TKey, TValue>);
			this.Key = key;
			this.Value = value;
		}

		// Token: 0x1700019E RID: 414
		// (get) Token: 0x06001583 RID: 5507 RVA: 0x0005F69C File Offset: 0x0005DA9C
		// (set) Token: 0x06001584 RID: 5508 RVA: 0x0005F6A4 File Offset: 0x0005DAA4
		public TKey Key { get; private set; }

		// Token: 0x1700019F RID: 415
		// (get) Token: 0x06001585 RID: 5509 RVA: 0x0005F6AD File Offset: 0x0005DAAD
		// (set) Token: 0x06001586 RID: 5510 RVA: 0x0005F6B5 File Offset: 0x0005DAB5
		public TValue Value { get; private set; }

		// Token: 0x06001587 RID: 5511 RVA: 0x0005F6BE File Offset: 0x0005DABE
		public override string ToString()
		{
			return string.Format("Key:{0} Value:{1}", this.Key, this.Value);
		}

		// Token: 0x06001588 RID: 5512 RVA: 0x0005F6E0 File Offset: 0x0005DAE0
		public override int GetHashCode()
		{
			return EqualityComparer<TKey>.Default.GetHashCode(this.Key) ^ EqualityComparer<TValue>.Default.GetHashCode(this.Value) << 2;
		}

		// Token: 0x06001589 RID: 5513 RVA: 0x0005F705 File Offset: 0x0005DB05
		public bool Equals(DictionaryAddEvent<TKey, TValue> other)
		{
			return EqualityComparer<TKey>.Default.Equals(this.Key, other.Key) && EqualityComparer<TValue>.Default.Equals(this.Value, other.Value);
		}
	}
}
